package cn.swing.his.affair.service;

import cn.swing.his.pojo.affair.dto.MedicalEquipmentDetailsDTO;
import cn.swing.his.pojo.affair.dto.MedicineDetailsDTO;
import cn.swing.his.pojo.affair.vo.*;

import java.util.List;

public interface IAffairService {
    //---------------增------------------

    /**
     * 新增药品信息
     *
     * @param medicineDetails
     * @return
     */
    Integer insertMedicineDetails(MedicineDetailsDTO medicineDetails);

    /**
     * 新增设备信息
     *
     * @param medicalEquipmentDetails
     * @return
     */
    Integer insertMedicalEquipmentDetails(MedicalEquipmentDetailsDTO medicalEquipmentDetails);

    /**
     * 新增排班信息
     *
     * @param timeId
     * @param dayId
     * @param doctorId
     * @return
     */
    Integer insertScheduleInfo(Integer timeId, Integer dayId, Integer doctorId, Integer roomId);
    //---------------删------------------

    /**
     * 根据ID删除药品信息
     *
     * @param id
     * @return
     */
    Integer deleteMedicineDetailsById(Integer id);

    /**
     * 根据ID删除设备信息
     *
     * @param id
     * @return
     */
    Integer deleteMedicalEquipmentById(Integer id);

    /**
     * 删除某一时刻的对应信息
     *
     * @param timeId
     * @param dayId
     * @param roomId
     * @return
     */
    Integer deleteScheduleInfoByTimeAndDayAndRoom(Integer timeId, Integer dayId, Integer roomId);
    //---------------改------------------

    /**
     * 修改药品信息
     *
     * @param medicineDetails
     * @return
     */
    Integer updateMedicineDetails(MedicineDetailsDTO medicineDetails);

    /**
     * 修改医疗设备信息
     *
     * @param medicalEquipmentDetailsDTO
     * @return
     */
    Integer updateMedicalEquipmentDetails(MedicalEquipmentDetailsDTO medicalEquipmentDetailsDTO);

    //---------------查------------------

    /**
     * 获取药品列表
     *
     * @return 返回所有的药品信息
     */
    List<MedicineDetailsVO> getMedicineList();

    /**
     * 根据关键字查询药品列表
     *
     * @return 返回所有的药品信息
     */
    List<MedicineDetailsVO> getMedicineByKeyword(String keyword);

    /**
     * 获取设备列表
     *
     * @return
     */
    List<MedicalEquipmentDetailsVO> getMedicalEquipmentList();


    /**
     * 搜索设备
     *
     * @return
     */
    List<MedicalEquipmentDetailsVO> getMedicalEquipmentListByKeyword(String keyword);

    /**
     * 获取时间段
     *
     * @return
     */
    List<ScheduleVO> getScheduleList();

    /**
     * 根据部门号获取该部门的医生的简单信息
     *
     * @param roomId
     * @return
     */
    List<DoctorSimpleVO> getDoctorSimpleByRoomId(Integer roomId);

    /**
     * 根据时间、日期和部门查询对应时刻的排班信息
     *
     * @param timeId
     * @param dayId
     * @param roomId
     * @return
     */
    List<Integer> getScheduleByTimeAndDayAndRoom(Integer timeId, Integer dayId, Integer roomId);

    /**
     * 获取具体时间段的排班人员姓名
     *
     * @param timeId
     * @param dayId
     * @param roomId
     * @return
     */
    List<String> getScheduleUserName(Integer timeId, Integer dayId, Integer roomId);

    /**
     * 获取科室列表
     *
     * @return
     */
    List<RoomSimpleVO> getRooms();

    /**
     * 获取某一时刻某用户的排班情况
     *
     * @return
     */
    Integer getScheduleStatus(Integer timeId, Integer dayId, Integer doctorId);
}
